The present invention relates to video coding and, in particular, to predictive coding techniques based on prediction patches.
Motion compensation is commonly used as prediction in modern video compression standards to exploit temporal redundancy across frames. A first encoded frame serves as a prediction reference for one or more subsequently-coded frames. In such systems, a video coder codes the first frame and transmits the coded data to a remote video decoder. The video coder itself decodes the first coded frame and stores the recovered frame locally for use as a prediction reference for later frames. Since video coding techniques typically are lossy, the recovered frame likely will have some coding-induced errors when compared to its source. However, the video coder and video decoder each may obtain a common copy of the recovered frame, absent transmission errors, which provide an adequate basis for coding.
A video coder uses locally decoded video (called, “reference frames” herein) to generate prediction data when coding a later-received frame. The video coder parses frames into pixel blocks and codes the frame on a pixel block-by-pixel block basis. The video coder searches for a prediction reference among locally-stored reference frames and, when one is found, the video coder codes a difference between the predicted data and source content of the later-received frame.
High coding efficiency can be achieved using motion compensated prediction techniques. However, temporal correlation in the video sequence can be broken, for example, on a scene change, when there is camera movement, in the presence of high level noise, etc. Further, a video coder and decoder typically store a limited number of reference frames which may fail to provide good prediction when temporal correlation is low. Accordingly, there is a need in the art for a video coding system that can exploit benefits of predictive coding techniques when reference frames become poor predictors for a video sequence being coded.